#include <string>
#include <iostream>
#include <jsoncpp/json/json.h>

int main()
{
    // 假设有三个变量：
    int a = 19;
    double b = 3.14;
    char c = '*';

    // 使用json存储：
    Json::Value root; // 定义一个万能对象：Json::Value，用来表示Json中的任何一种value抽象数据类型
    root["a"] = a;
    root["b"] = b;
    root["c"] = c;

    Json::Value sub;
    sub["s1"] = "hello";
    sub["s2"] = "json";

    root["sub"] = sub; // 对象中放入对象（套娃使用

    // 序列化：
    Json::StyledWriter writer1;
    std::string str1 = writer1.write(root);

    Json::FastWriter writer2;
    std::string str2 = writer2.write(root);

    // 两种方式的结果演示：前者会做一些字段分隔处理，方便查看。一般直接使用可用后者。
    std::cout << str1 << std::endl;
    printf("\n\n");
    std::cout << str2 << std::endl;

    // 反序列化：
    Json::Value buffer1;
    Json::Value buffer2;
    Json::Reader reader;
    reader.parse(str1, buffer1);
    reader.parse(str1, buffer2);
    std::cout << buffer1["a"].asInt() << std::endl;
    std::cout << buffer1["b"].asDouble() << std::endl;
    std::cout << buffer1["c"].asInt() << std::endl;


    return 0;
}


